diff -crbB gnuplot.org\command.c d:\tc2\gnu\gnuplot\command.c
*** gnuplot.org\command.c	Sat Feb 15 17:12:08 1992
--- d:\tc2\gnu\gnuplot\command.c	Thu Feb 13 00:51:12 1992
***************
*** 2871,2876 ****
--- 2871,2879 ----
  #ifdef AMIGA_AC_5
  char strg0[256];
  #endif
+ #if defined(ATARI)&&defined(__GNUC__)
+ #include <osbind.h>
+ #endif
  
  do_system()
  {
***************
*** 2881,2887 ****
--- 2884,2903 ----
     getparms(input_line+1,parms);
     if(fexecv(parms[0],parms) < 0)
  #else
+ #if defined(ATARI)&&defined(__GNUC__)
+    /* use preloaded shell, if available */
+    short (*shell_p)(char *command);
+    void *ssp;
+ 
+    ssp=(void*)Super(NULL);
+    shell_p=*(short(**)(char*))0x4f6;
+    Super(ssp);
+ 
+    /* this is a bit strange, but we have to have a single if */
+    if( (shell_p ? (*shell_p)(input_line+1) : system(input_line+1) ) )
+ #else
     if (system(input_line + 1))
+ #endif
  #endif
        os_error("system() failed",NO_CARET);
  }
diff -crbB gnuplot.org\demo\simple.dem d:\tc2\gnu\gnuplot\demo\simple.dem
*** gnuplot.org\demo\simple.dem	Tue Feb 11 23:19:22 1992
--- d:\tc2\gnu\gnuplot\demo\simple.dem	Fri Feb 28 13:21:58 1992
***************
*** 31,37 ****
  plot [-30:20] sin(x*20)*atan(x)
  pause -1 "Hit return to continue"
  
! plot [-19:19] '1.dat'with impulses ,'2.dat' ,'3.dat' with lines
  pause -1 "Hit return to continue"
  
  # undo what we have done above
--- 31,37 ----
  plot [-30:20] sin(x*20)*atan(x)
  pause -1 "Hit return to continue"
  
! plot [-19:19] '1.dat' with impulses ,'2.dat' ,'3.dat' with lines
  pause -1 "Hit return to continue"
  
  # undo what we have done above
diff -crbB gnuplot.org\internal.c d:\tc2\gnu\gnuplot\internal.c
*** gnuplot.org\internal.c	Sat Feb 15 17:12:28 1992
--- d:\tc2\gnu\gnuplot\internal.c	Sun Feb 09 17:01:00 1992
***************
*** 66,77 ****
  #ifdef apollo
  int matherr(struct exception *x)	/* apollo */
  #else /* apollo */
! #ifdef AMIGA_LC_5_1
  int matherr(x)	/* AMIGA_LC_5_1 */
  struct exception *x;
  #else    /* Most everyone else (not apollo). */
  int matherr()
! #endif /* AMIGA_LC_5_1 */
  #endif /* apollo */
  #endif /* MSDOS */
  {
--- 66,77 ----
  #ifdef apollo
  int matherr(struct exception *x)	/* apollo */
  #else /* apollo */
! #if defined(AMIGA_LC_5_1)||defined(ATARI)&&defined(__GNUC__)
  int matherr(x)	/* AMIGA_LC_5_1 */
  struct exception *x;
  #else    /* Most everyone else (not apollo). */
  int matherr()
! #endif /* AMIGA_LC_5_1 || GCC_ST */
  #endif /* apollo */
  #endif /* MSDOS */
  {
diff -crbB gnuplot.org\plot.c d:\tc2\gnu\gnuplot\plot.c
*** gnuplot.org\plot.c	Sat Feb 15 17:12:36 1992
--- d:\tc2\gnu\gnuplot\plot.c	Sun Mar 08 17:54:16 1992
***************
*** 57,62 ****
--- 57,66 ----
  #include <graphics.h>
  #endif
  
+ #if defined(__GNUC__)&&defined(ATARI)
+ #include <osbind.h>
+ #endif
+ 
  extern char *getenv(),*strcat(),*strcpy(),*strncpy();
  
  extern char input_line[];
***************
*** 134,165 ****
  #define HOME "sys$login:"
  
  #else /* vms */
! #ifdef MSDOS
  
  #define HOME "GNUPLOT"
  
! #else /* MSDOS */
! 
! #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
! 
! #define HOME "GNUPLOT"
! #else /* AMIGA */
  
  #define HOME "HOME"
  
! #endif /* AMIGA */
! #endif /* MSDOS */
  #endif /* vms */
  
! #ifdef unix
! #define PLOTRC ".gnuplot"
! #else /* unix */
! #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
  #define PLOTRC ".gnuplot"
! #else /* AMIGA */
  #define PLOTRC "gnuplot.ini"
! #endif /* AMIGA */
! #endif /* unix */
  
  #ifdef __TURBOC__
  void tc_interrupt()
--- 138,159 ----
  #define HOME "sys$login:"
  
  #else /* vms */
! #if defined(MSDOS) ||  defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1) || defined(ATARI)
  
  #define HOME "GNUPLOT"
  
! #else /* MSDOS || AMIGA || ATARI */
  
  #define HOME "HOME"
  
! #endif /* MSDOS || AMIGA || ATARI */
  #endif /* vms */
  
! #if defined(unix) || defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
  #define PLOTRC ".gnuplot"
! #else /* AMIGA || unix */
  #define PLOTRC "gnuplot.ini"
! #endif /* AMIGA || unix */
  
  #ifdef __TURBOC__
  void tc_interrupt()
***************
*** 297,302 ****
--- 321,330 ----
                  (void) signal(SIGINT, ss_interrupt);
  #endif
  #else /* MSDOS */
+ #if defined(__GNUC__)&&defined(ATARI)
+         /* clear keybd buffer - strange GCC bug with signal(SIGINT) */
+                 while( Cconis() ) Cnecin();
+ #endif /* GNUC && ATARI */
                  (void) signal(SIGINT, inter);   /* go there on interrupt char */
  #endif /* MSDOS */
  }
***************
*** 313,320 ****
  #ifdef vms
      (void) strcpy(home,HOME);
  #else /* vms */
  #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
-     strcpy(home,getenv(HOME));
      {
          int h;
          h = strlen(home) - 1;
--- 341,356 ----
  #ifdef vms
      (void) strcpy(home,HOME);
  #else /* vms */
+ #if !defined(AMIGA_AC_5)&&!defined(AMIGA_LC_5_1)&&!defined(MSDOS)&&!defined(ATARI)
+     (void) strcat(strcpy(home,getenv(HOME)),"/");
+ #else 
+     char *tmp_home=getenv(HOME);
+ 
+     if( !tmp_home ) {
+         home[0]='\0';
+     } else {
+         strcpy(home,tmp_home);
  #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
          {
              int h;
              h = strlen(home) - 1;
***************
*** 326,334 ****
         	}
      }
  #else /* AMIGA */
!     (void) strcat(strcpy(home,getenv(HOME)),"/");
  #endif /* AMIGA */
  #endif /* vms */
  #ifdef NOCWDRC
      /* inhibit check of init file in current directory for security reasons */
      {
--- 362,374 ----
              }
          }
  #else /* AMIGA */
!         if( strlen(home) && home[strlen(home)-1]!='\\' )
!             strcat(home,"\\");
  #endif /* AMIGA */
+     }
+ #endif /* !AMIGA && !MSDOS && !ATARI */
  #endif /* vms */
+ 
  #ifdef NOCWDRC
      /* inhibit check of init file in current directory for security reasons */
      {
diff -crbB gnuplot.org\plot.h d:\tc2\gnu\gnuplot\plot.h
*** gnuplot.org\plot.h	Sat Feb 15 17:12:46 1992
--- d:\tc2\gnu\gnuplot\plot.h	Mon Feb 10 23:07:40 1992
***************
*** 39,45 ****
--- 39,49 ----
  #if defined(AMIGA_LC_5_1) || defined(AMIGA_AC_5)
  #define SHELL "NewShell"
  #else /* AMIGA */
+ #ifdef ATARI
+ #define SHELL "gulam.prg"
+ #else /* ATARI */
  #define SHELL "/bin/sh"		/* used if SHELL env variable not set */
+ #endif /* ATARI */
  #endif /* AMIGA  */
  
  #define SAMPLES 100		/* default number of samples for a plot */
***************
*** 111,116 ****
--- 115,124 ----
  #endif
  
  
+ #ifdef ATARI
+ #define OS "TOS "
+ #endif
+ 
  #ifndef OS
  #define OS ""
  #endif
***************
*** 260,268 ****
--- 268,278 ----
  	LEFT, CENTRE, RIGHT
  };
  
+ #if !(defined(ATARI)&&defined(__GNUC__)&&defined(_MATH_H)) /* FF's math.h has the type already */
  struct cmplx {
  	double real, imag;
  };
+ #endif
  
  
  struct value {
diff -crbB gnuplot.org\readline.c d:\tc2\gnu\gnuplot\readline.c
*** gnuplot.org\readline.c	Sat Feb 15 17:12:54 1992
--- d:\tc2\gnu\gnuplot\readline.c	Sun Feb 09 21:41:44 1992
***************
*** 69,75 ****
  #endif
  
  
! #ifndef MSDOS
  
  /* UNIX specific stuff */
  #ifdef TERMIOS
--- 69,75 ----
  #endif
  
  
! #if !defined(MSDOS)&&!defined(ATARI)
  
  /* UNIX specific stuff */
  #ifdef TERMIOS
***************
*** 81,95 ****
  #endif /* TERMIOS */
  static int term_set = 0;	/* =1 if rl_termio set */
  
! #else
! 
  /* MSDOS specific stuff */
  #define getc(stdin) msdos_getch()
  static char msdos_getch();
! 
  #endif /* MSDOS */
  
- 
  /* is it <string.h> or <strings.h>?   just declare what we need */
  extern int strlen();
  extern char *strcpy();
--- 81,101 ----
  #endif /* TERMIOS */
  static int term_set = 0;	/* =1 if rl_termio set */
  
! #else /* !MSDOS && !ATARI */
! #ifdef MSDOS
  /* MSDOS specific stuff */
  #define getc(stdin) msdos_getch()
  static char msdos_getch();
! #else /* MSDOS */
! /* ATARI then */
! #ifdef getc
! #undef getc
! #endif
! #define getc(f) tos_getch()
! static char tos_getch();
  #endif /* MSDOS */
+ #endif /* !MSDOS && !ATARI */
  
  /* is it <string.h> or <strings.h>?   just declare what we need */
  extern int strlen();
  extern char *strcpy();
***************
*** 494,504 ****
  
  #endif /* MSDOS */
  
  /* set termio so we can do our own input processing */
  static void
  set_termio()
  {
! #ifndef MSDOS
  	if(term_set == 0) {
  #ifdef TERMIOS
  #ifdef TCGETS
--- 500,561 ----
  
  #endif /* MSDOS */
  
+ #ifdef ATARI
+ 
+ /* Convert Arrow keystrokes to Control characters: TOS version */
+ 
+ #include <osbind.h>
+ 
+ static char
+ tos_getch()
+ {
+     long c=Cnecin();
+     int scan_code=(int)(c>>16); /* get the scancode */
+ 
+     scan_code &= 0xff;
+ 
+     if( Kbshift(-1)&7 ) scan_code|=0x80; /* Shift or Ctrl */
+ 
+     switch(scan_code) {
+ 	case 0x48: /* Up Arrow */
+ 	    c=0x10; /* ^P */
+ 	    break;
+ 	case 0x50: /* Down Arrow */
+ 	    c=0x0e; /* ^N */
+ 	    break;
+ 	case 0x4b: /* Left Arrow */
+ 	    c=0x02; /* ^B */
+ 	    break;
+ 	case 0x4d: /* Right Arrow */
+ 	    c=0x06; /* ^F */
+ 	    break;
+ 	case 0xcb: /* Shift Left Arrow */
+ 	case 0xf3: /* Ctrl Left Arrow (TOS-bug ?) */
+ 	    c=0x01; /* ^A */
+ 	    break;
+ 	case 0xcd: /* Ctrl Right Arrow */
+ 	case 0xf4: /* Ctrl Right Arrow (TOS-bug ?) */
+ 	    c=0x05; /* ^E */
+ 	    break;
+ 	case 0x61: /* Undo - redraw line */
+ 	    c=0x0c; /* ^L */
+ 	    break;
+     }
+ 
+     if( (char)c==(char)0x1b ) c=0x15; /* Esc becomes ^U */
+ 
+     if( (char)c==(char)0x7f ) c=0x04; /* Del becomes ^D */
+ 
+     return (char)c;
+ }
+ 
+ #endif /* ATARI */
+ 
  /* set termio so we can do our own input processing */
  static void
  set_termio()
  {
! #if !defined(MSDOS)&&!defined(ATARI)
  	if(term_set == 0) {
  #ifdef TERMIOS
  #ifdef TCGETS
***************
*** 538,550 ****
  #endif /* TERMIOS */
  		term_set = 1;
  	}
! #endif /* MSDOS */
  }
  
  static void
  reset_termio()
  {
! #ifndef MSDOS
  	if(term_set == 1) {
  #ifdef TERMIOS
  #ifdef TCSETSW
--- 595,607 ----
  #endif /* TERMIOS */
  		term_set = 1;
  	}
! #endif /* !MSDOS && !ATARI */
  }
  
  static void
  reset_termio()
  {
! #if !defined(MSDOS)&&!defined(ATARI)
  	if(term_set == 1) {
  #ifdef TERMIOS
  #ifdef TCSETSW
***************
*** 557,562 ****
  #endif /* TERMIOS */
  		term_set = 0;
  	}
! #endif /* MSDOS */
  }
  #endif /* READLINE */
--- 614,619 ----
  #endif /* TERMIOS */
  		term_set = 0;
  	}
! #endif /* !MSDOS && !ATARI */
  }
  #endif /* READLINE */
diff -crbB gnuplot.org\term\epson.trm d:\tc2\gnu\gnuplot\term\epson.trm
*** gnuplot.org\term\epson.trm	Sat Feb 15 18:17:16 1992
--- d:\tc2\gnu\gnuplot\term\epson.trm	Fri Mar 06 12:37:28 1992
***************
*** 17,23 ****
   * This file is included by ../term.c.
   *
   * This terminal driver supports:
!  *  epson_lx800, nec_cp6c, nec_cp6d, nec_cp6b, starc,
   *  epson_60dpi, tandy_60dpi
   *
   * AUTHORS
--- 17,23 ----
   * This file is included by ../term.c.
   *
   * This terminal driver supports:
!  *  epson_lx800, nec_cp6, starc,
   *  epson_60dpi, tandy_60dpi
   *
   * AUTHORS
***************
*** 49,58 ****
  
  EPSONinit()
  {
! #ifdef PC
! 	reopen_binary();
! #endif
! #ifdef vms
  	reopen_binary();
  #endif
  }
--- 49,55 ----
  
  EPSONinit()
  {
! #ifdef REOPEN_BINARY
  	reopen_binary();
  #endif
  }
***************
*** 135,190 ****
  static unsigned int neccolor[] = {1,8,4,2,10,12,6,14};
  static unsigned int necpcolor[]= {0,2,1,4};
  
! NECinit()
  {
! #ifdef PC
! 	reopen_binary();
! #endif
! #ifdef vms
! 	reopen_binary();
! #endif
  }
  
! 
! /* Monochrome only NEC CP6 printer (set term nec_cp6m or nec_cp6d). */
! /* will probably work with NEC P6 printer */
! NECMgraphics()
  {
! 	b_charsize(FNT5X9);
! 	b_makebitmap((unsigned int)(NECXMAX*xsize),
! 	             (unsigned int)(NECYMAX*ysize),1);
  }
  
! /* Color ribbon in NEC CP6 printer (set term nec_cp6c) */
! NECCgraphics()
  {
  	b_charsize(FNT5X9);
  	b_makebitmap((unsigned int)(NECXMAX*xsize),
! 	             (unsigned int)(NECYMAX*ysize),4);
! }
! 
! 
! NECdraft_text()
! {
! 	nec_draft_dump();
! 	b_freebitmap();
  }
  
  NECtext()
  {
  	nec_dump();
  	b_freebitmap();
  }
  
! NECClinetype(linetype)
  int linetype;
  {
  	if (linetype>=6)
  		linetype %= 6;
  	b_setvalue(neccolor[linetype+2]);
  }
  
- #define NECMlinetype b_setlinetype
  #define NECmove b_move
  #define NECvector b_vector
  #define NECput_text b_put_text
--- 132,203 ----
  static unsigned int neccolor[] = {1,8,4,2,10,12,6,14};
  static unsigned int necpcolor[]= {0,2,1,4};
  
! static int NECmode;
! 
! NECoptions()
  {
! 	if( END_OF_COMMAND ) {
! 		strcpy(term_options,"monochrome");
! 		NECmode='m';
! 	} else
! 	if( almost_equals(c_token,"m$onochrome") ) {
! 		c_token++;
! 		strcpy(term_options,"monochrome");
! 		NECmode='m';
! 	} else
! 	if( almost_equals(c_token,"c$olor") ) {
! 		c_token++;
! 		strcpy(term_options,"color");
! 		NECmode='c';
! 	} else
! 	if( almost_equals(c_token,"d$raft") ) {
! 		c_token++;
! 		strcpy(term_options,"draft");
! 		NECmode='d';
! 	} else {
! 	/* error, but since the terminal is already set, default to mono */
! 		strcpy(term_options,"monochrome");
! 		NECmode='m';
! 		int_error("modes: color, monochrome, draft",c_token);
! 	}
  }
  
! NECinit()
  {
! #ifdef REOPEN_BINARY
! 	reopen_binary();
! #endif
  }
  
! NECgraphics()
  {
  	b_charsize(FNT5X9);
  	b_makebitmap((unsigned int)(NECXMAX*xsize),
! 		     (unsigned int)(NECYMAX*ysize),(NECmode=='c' ? 4 : 1));
  }
  
  NECtext()
  {
+ 	if( NECmode=='d' ) {
+ 		nec_draft_dump();
+ 	} else {
  		nec_dump();
+ 	}
  	b_freebitmap();
  }
  
! NEClinetype(linetype)
  int linetype;
  {
+ 	if( NECmode=='c' ) {
  		if (linetype>=6)
  			linetype %= 6;
  		b_setvalue(neccolor[linetype+2]);
+ 	} else {
+ 		b_setlinetype(linetype);
+ 	}
  }
  
  #define NECmove b_move
  #define NECvector b_vector
  #define NECput_text b_put_text
***************
*** 325,334 ****
  
  STARCinit()
  {
! #ifdef PC
! 	reopen_binary();
! #endif
! #ifdef vms
  	reopen_binary();
  #endif
  }
--- 338,344 ----
  
  STARCinit()
  {
! #ifdef REOPEN_BINARY
  	reopen_binary();
  #endif
  }
diff -crbB gnuplot.org\term\hpgl.trm d:\tc2\gnu\gnuplot\term\hpgl.trm
*** gnuplot.org\term\hpgl.trm	Tue Feb 11 23:25:02 1992
--- d:\tc2\gnu\gnuplot\term\hpgl.trm	Thu Mar 05 19:39:42 1992
***************
*** 48,64 ****
  */
  }
  
! HPLJIII_PORT_init()
! {
!   	fputs("\033E\033&l1X\033&l0O\033%0B;PW0.15\n",outfile);
! }
  
! HPLJIII_LAND_init()
  {
! 	fputs("\033E\033&l1X\033&l1O\033%0B;PW0.15\n",outfile);
  }
  
- 
  HPLJIII_graphics()
  {
  	fprintf(outfile,
--- 48,82 ----
  */
  }
  
! static char HPLJIIImode;
  
! HPLJIII_options()
  {
! 	if( END_OF_COMMAND ) {
! 		term_options[0]='\0';
! 		HPLJIIImode='0';
! 	} else
! 	if( almost_equals(c_token,"p$ortrait") ) {
! 		c_token++;
! 		strcpy(term_options,"portrait");
! 		HPLJIIImode='0';
! 	} else
! 	if( almost_equals(c_token,"l$andscape") ) {
! 		c_token++;
! 		strcpy(term_options,"landscape");
! 		HPLJIIImode='1';
! 	} else {
! 		term_options[0]='\0';
! 		HPLJIIImode='0';
! 		int_error("portrait or landscape",c_token);
! 	}
! }
! 
! HPLJIII_init()
! {
! 	fprintf(outfile,"\033E\033&l1X\033&l%cO\033%0B;PW0.15\n",HPLJIIImode);
  }
  
  HPLJIII_graphics()
  {
  	fprintf(outfile,
diff -crbB gnuplot.org\term\hpljii.trm d:\tc2\gnu\gnuplot\term\hpljii.trm
*** gnuplot.org\term\hpljii.trm	Sat Feb 15 18:19:28 1992
--- d:\tc2\gnu\gnuplot\term\hpljii.trm	Fri Mar 06 12:37:52 1992
***************
*** 78,89 ****
  HPLJIIoptions()
  {
  char opt[4];
  
! #define HPDJERROR "expecting dots per inch size 75, 100, 150 or 300"
! 	if (!END_OF_COMMAND) {
! 		if (token[c_token].length>3)
! 			int_error(HPDJERROR,c_token);
! 
  		/* almost_equals() won't accept numbers - use strcmp() instead */
  		capture(opt,c_token,c_token);
  		if (!strcmp(opt,"75")) {
--- 78,91 ----
  HPLJIIoptions()
  {
  char opt[4];
+ int parse_error=0;
  
! 	if (END_OF_COMMAND) {
! 		term_options[0]='\0';
! 	} else {
! 		if (token[c_token].length>3) {
! 			parse_error=1; /* see below */
! 		} else {
  		/* almost_equals() won't accept numbers - use strcmp() instead */
  			capture(opt,c_token,c_token);
  			if (!strcmp(opt,"75")) {
***************
*** 98,107 ****
  		else if (!strcmp(opt,"300")) {
     			hplj_dpp = 1;
  		} else {
! 			int_error(HPDJERROR,c_token);
  		}
  		c_token++;
  	}
  
  	term_tbl[term].xmax = HPLJII_XMAX;
  	term_tbl[term].ymax = HPLJII_YMAX;
--- 100,111 ----
  			else if (!strcmp(opt,"300")) {
  				hplj_dpp = 1;
  			} else {
! 		/* error, but set dpi anyway, since term it already set */
! 				parse_error=1;
  			}
  		c_token++;
  		}
+ 	}
  
  	term_tbl[term].xmax = HPLJII_XMAX;
  	term_tbl[term].ymax = HPLJII_YMAX;
***************
*** 127,141 ****
  			term_tbl[term].h_tic = 5;
  			break;
  	}
  }
  
  
  HPLJIIinit()
  {
! #ifdef vms
!    reopen_binary();
! #endif /* vms */
! #ifdef PC
     reopen_binary();
  #endif /* PC */
  }
--- 131,146 ----
  			term_tbl[term].h_tic = 5;
  			break;
  	}
+ 
+ 	if( parse_error ) 
+ 		int_error("expecting dots per inch size 75, 100, 150 or 300",
+ 				c_token);
  }
  
  
  HPLJIIinit()
  {
! #ifdef REOPEN_BINARY
     reopen_binary();
  #endif /* PC */
  }
diff -crbB gnuplot.org\term.c d:\tc2\gnu\gnuplot\term.c
*** gnuplot.org\term.c	Sat Feb 15 17:13:18 1992
--- d:\tc2\gnu\gnuplot\term.c	Fri Mar 06 12:36:28 1992
***************
*** 43,50 ****
--- 43,55 ----
  /* for use by all drivers */
  #define sign(x) ((x) >= 0 ? 1 : -1)
  #define abs(x) ((x) >= 0 ? (x) : -(x))
+ 
+ #ifndef max	/* GCC uses inline functions */
  #define max(a,b) ((a) > (b) ? (a) : (b))
+ #endif
+ #ifndef min
  #define min(a,b) ((a) < (b) ? (a) : (b))
+ #endif
  
  BOOLEAN term_init;			/* true if terminal has been initialized */
  
***************
*** 75,82 ****
  #ifdef __TURBOC__
  char *turboc_init();
  #endif
! #ifdef PC
  void reopen_binary();
  #endif
  #ifdef vms
  char *vms_init();
--- 80,89 ----
  #ifdef __TURBOC__
  char *turboc_init();
  #endif
! 
! #if defined(PC)||defined(ATARI)
  void reopen_binary();
+ #define REOPEN_BINARY
  #endif
  #ifdef vms
  char *vms_init();
***************
*** 87,92 ****
--- 94,100 ----
  void term_nopasthru();
  void reopen_binary();
  void fflush_binary();
+ #define REOPEN_BINARY
  #endif
  
  /* This is needed because the unixplot library only writes to stdout. */
***************
*** 428,433 ****
--- 436,444 ----
  #include "term/amiga.trm"
  #endif
  
+ #ifdef ATARI
+ #include "term/atari.trm"
+ #endif
  
  /* Dummy functions for unavailable features */
  
***************
*** 492,497 ****
--- 503,517 ----
  	   AMIGA_justify_text, do_point, do_arrow}
  #endif
  
+ #ifdef ATARI
+     ,{"atari", "Atari ST/TT",
+ 	   ATARI_XMAX, ATARI_YMAX, ATARI_VCHAR, ATARI_HCHAR, 
+ 	   ATARI_VTIC, ATARI_HTIC, ATARI_options, ATARI_init, ATARI_reset, 
+ 	   ATARI_text, null_scale, ATARI_graphics, ATARI_move, ATARI_vector, 
+ 	   ATARI_linetype, ATARI_put_text, ATARI_text_angle, 
+ 	   null_justify_text, ATARI_point, do_arrow}
+ #endif
+ 
  #ifdef DUMB
      ,{"dumb", "printer or glass dumb terminal",
  	 DUMB_XMAX, DUMB_YMAX, 1, 1,
***************
*** 812,826 ****
  #endif
  
  #ifdef HPLJIII
!     ,{"pcl5_port", "HP laserjet iii (using HPGL plot vectors), portrait mode",
! 	HPGL_XMAX, HPGL_YMAX, HPGL_VCHAR, HPGL_HCHAR,
! 	HPGL_VTIC, HPGL_HTIC, options_null, HPLJIII_PORT_init, HPLJIII_reset,
! 	HPGL_text, null_scale, HPGL_graphics, HPGL_move, HPGL_vector,
! 	HPGL_linetype, HPGL_put_text, HPGL_text_angle,
! 	null_justify_text, do_point, do_arrow}
!      ,{"pcl5_land", "HP laserjet iii (using HPGL plot vectors), landscape mode",
  	HPGL_XMAX, HPGL_YMAX, HPGL_VCHAR, HPGL_HCHAR,
! 	HPGL_VTIC, HPGL_HTIC, options_null, HPLJIII_LAND_init, HPLJIII_reset,
  	HPGL_text, null_scale, HPGL_graphics, HPGL_move, HPGL_vector,
  	HPGL_linetype, HPGL_put_text, HPGL_text_angle,
  	null_justify_text, do_point, do_arrow}
--- 832,840 ----
  #endif
  
  #ifdef HPLJIII
!     ,{"pcl5", "HP laserjet iii (using HPGL plot vectors) [port land]",
  	HPGL_XMAX, HPGL_YMAX, HPGL_VCHAR, HPGL_HCHAR,
! 	HPGL_VTIC, HPGL_HTIC, HPLJIII_options, HPLJIII_init, HPLJIII_reset,
  	HPGL_text, null_scale, HPGL_graphics, HPGL_move, HPGL_vector,
  	HPGL_linetype, HPGL_put_text, HPGL_text_angle,
  	null_justify_text, do_point, do_arrow}
***************
*** 878,900 ****
  #endif
  
  #ifdef NEC
!     ,{"nec_cp6m", "NEC printer CP6, Epson LQ-800 Monochrome",
! 	   NECXMAX, NECYMAX, NECVCHAR, NECHCHAR, 
! 	   NECVTIC, NECHTIC, options_null, NECinit, NECreset, 
! 	   NECtext, null_scale, NECMgraphics, NECmove, NECvector, 
! 	   NECMlinetype, NECput_text, NEC_text_angle, 
! 	   null_justify_text, line_and_point, do_arrow}
!     ,{"nec_cp6c", "NEC printer CP6 Color",
! 	   NECXMAX, NECYMAX, NECVCHAR, NECHCHAR, 
! 	   NECVTIC, NECHTIC, options_null, NECinit, NECreset, 
! 	   NECtext, null_scale, NECCgraphics, NECmove, NECvector, 
! 	   NECClinetype, NECput_text, NEC_text_angle, 
! 	   null_justify_text, do_point, do_arrow}
!     ,{"nec_cp6d", "NEC printer CP6, Epson LQ-800 Draft monochrome",
  	   NECXMAX, NECYMAX, NECVCHAR, NECHCHAR, 
! 	   NECVTIC, NECHTIC, options_null, NECinit, NECreset, 
! 	   NECdraft_text, null_scale, NECMgraphics, NECmove, NECvector, 
! 	   NECMlinetype, NECput_text, NEC_text_angle, 
  	   null_justify_text, line_and_point, do_arrow}
  #endif
  
--- 892,902 ----
  #endif
  
  #ifdef NEC
!     ,{"nec_cp6", "NEC printer CP6, Epson LQ-800 [monocrome color draft]",
  	   NECXMAX, NECYMAX, NECVCHAR, NECHCHAR, 
! 	   NECVTIC, NECHTIC, NECoptions, NECinit, NECreset, 
! 	   NECtext, null_scale, NECgraphics, NECmove, NECvector, 
! 	   NEClinetype, NECput_text, NEC_text_angle, 
  	   null_justify_text, line_and_point, do_arrow}
  #endif
  
***************
*** 1198,1203 ****
--- 1200,1209 ----
  	   term_name = "amiga";
  #endif
  
+ #ifdef ATARI
+ 	   term_name = "atari";
+ #endif
+ 
  #ifdef UNIXPC
  	   if (iswind() == 0) {
  	      term_name = "unixpc";
***************
*** 1446,1453 ****
  	(*t->text)();
  }
  
! 
! #ifdef PC
  /* output for some terminal types must be binary to stop non Unix computers
     changing \n to \r\n. 
     If the output is not STDOUT, the following code reopens outfile 
--- 1452,1458 ----
  	(*t->text)();
  }
  
! #if defined(PC)||defined(ATARI)
  /* output for some terminal types must be binary to stop non Unix computers
     changing \n to \r\n. 
     If the output is not STDOUT, the following code reopens outfile 
***************
*** 1473,1479 ****
  		}
  	}
  }
! #endif
  
  #ifdef vms
  /* these are needed to modify terminal characteristics */
--- 1478,1484 ----
  		}
  	}
  }
! #endif /* PC || ATARI */
  
  #ifdef vms
  /* these are needed to modify terminal characteristics */
diff -crbB gnuplot.org\term.h d:\tc2\gnu\gnuplot\term.h
*** gnuplot.org\term.h	Sat Feb 15 17:13:30 1992
--- d:\tc2\gnu\gnuplot\term.h	Thu Mar 05 15:58:58 1992
***************
*** 45,51 ****
  
  /* These terminals are not relevant for MSDOS */
  #ifndef MSDOS
! 
  #ifdef AMIGA_LC_5_1
  #define AMIGASCREEN	/* Amiga custom screen */
  
--- 45,51 ----
  
  /* These terminals are not relevant for MSDOS */
  #ifndef MSDOS
! #ifndef ATARI
  #ifdef AMIGA_LC_5_1
  #define AMIGASCREEN     /* Amiga custom screen */
  
***************
*** 78,91 ****
  #define HP26		/* HP2623A and maybe others */
  #define HP75		/* HP7580, and probably other HPs */
  #define IMAGEN  	/* Imagen laser printers (300dpi) (requires -Iterm also) */
- 
- #define NEC		/* NEC CP6 pinwriter printer */
  #define PRESCRIBE	/* Kyocera Laser printer */
  #define QMS		/* QMS/QUIC laserprinter (Talaris 1200 and others) */
- #define STARC		/* Star Color Printer */
  #define TANDY60		/* Tandy DMP-130 series 60-dot per inch graphics */
  #define V384		/* Vectrix 384 and tandy color printer */
  
  #endif /* MSDOS */
  
  /* These terminals can be used on any system */
--- 77,92 ----
  #define HP26            /* HP2623A and maybe others */
  #define HP75            /* HP7580, and probably other HPs */
  #define IMAGEN          /* Imagen laser printers (300dpi) (requires -Iterm also) */
  #define PRESCRIBE       /* Kyocera Laser printer */
  #define QMS             /* QMS/QUIC laserprinter (Talaris 1200 and others) */
  #define TANDY60         /* Tandy DMP-130 series 60-dot per inch graphics */
  #define V384            /* Vectrix 384 and tandy color printer */
  
+ #endif /* ATARI */
+ 
+ #define NEC             /* NEC CP6 pinwriter printer */
+ #define STARC           /* Star Color Printer */
+ 
  #endif /* MSDOS */
  
  /* These terminals can be used on any system */
diff -crbB gnuplot.org\version.c d:\tc2\gnu\gnuplot\version.c
*** gnuplot.org\version.c	Sat Feb 15 17:13:36 1992
--- d:\tc2\gnu\gnuplot\version.c	Sat Feb 15 17:53:02 1992
***************
*** 35,42 ****
   */
  
  char version[] = "3.0 ";
! char patchlevel[] = "1, Dec 1 91";
! char date[] = "Sun Dec 1 16:56:36 1991";
  
  /* override in Makefile */
  #ifndef CONTACT
--- 35,42 ----
   */
  
  char version[] = "3.0 ";
! char patchlevel[] = "1a, Mar 10 92";
! char date[] = "Tue Mar 10 22:00:00 1992";
  
  /* override in Makefile */
  #ifndef CONTACT

